function flexibleMove(obj, target, fn) {
	clearInterval(obj.timer);
	var oSpeed = {};
	for(var sAttr in target) {
		oSpeed[sAttr] = 0;
	}
	obj.timer = setInterval(function () {
		var bStop = true;
		for(var sAttr in target) {
			var iCur = 0;
			if(sAttr == 'opacity') {
				iCur = Math.round(parseFloat(getStyle(obj, 'opacity'))*100);
			} else {
				iCur = parseInt(getStyle(obj, sAttr));
			}

			oSpeed[sAttr] += (target[sAttr] - iCur)/4;
			oSpeed[sAttr] *= 0.8;

			if(Math.abs(oSpeed[sAttr]) <= 1 && Math.abs(target[sAttr] - iCur) <= 1) {
				if(sAttr == 'opacity') {
					obj.style.opacity = target[sAttr]/100;
					obj.style.filter = 'alpha(opacity:' + target[sAttr] + ')';	
				} else {
					obj.style[sAttr] = target[sAttr] + 'px';
				}
			} else {
				if(sAttr == 'opacity') {
					obj.style.opacity = (iCur + oSpeed[sAttr])/100;
					obj.style.filter = 'alpha(opacity:' + (iCur + oSpeed[sAttr]) + ')';	
				} else {
					obj.style[sAttr] = iCur + oSpeed[sAttr] + 'px';
				}
				bStop = false;
			}
		}
		if(bStop) {
			clearInterval(obj.timer);
			fn && fn();
		}
	}, 30);
}
// 获取属性样式
function getStyle(obj, sAttr) {
	if(obj.currentStyle) {
		return obj.currentStyle[sAttr];
	} else {
		return getComputedStyle(obj, false)[sAttr];
	}
}